package com.bilibili.juc.arthas;

import java.util.Arrays;

/**
 *
 * 选择排序 每轮选择当前位置，开始找出后面较小的值与该位置交换 优化
 * 目的是每轮选出最小的值，放到当前位置，当前位置前进，再与后面的元素依次比较再选出最小值
 */
public class SelectSortHigh {
    public static void main(String[] args) {
/*
int[] arr = {5,2,1,3}
i            0 1 2 3
i= 0 1 2
当 i=0时，j=1 2 3
当 i=1时，j=2 3
当 i=2时，j=3
 */
//        int[] arr = {5,2,1,3};
        int[] arr = {5,3,2,1};
        int length = arr.length;
        int minIndex;
        int temp;
        for (int i = 0; i < length-1; i++) {
            minIndex = i;
            for (int j = i+1; j < length; j++) {
                if (arr[minIndex] > arr[j]){
                    minIndex= j; //保存较小值的索引
                }
            }
            if (minIndex != i){ // 如果当前位置不是最小值则进行交换
                temp = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = temp;
            }
        }

        System.out.println(Arrays.toString(arr));
    }
}
